package com.hsgene.sample.service;


import com.hsgene.common.util.result.ApiResult;
import com.hsgene.common.util.result.NullObject;
import com.hsgene.common.util.support.Pagination;
import com.hsgene.sample.condition.SampleCondition;
import com.hsgene.sample.domain.GeneticTestingSample;
import com.hsgene.sample.dto.GeneticTestingAgencySampleDto;
import com.hsgene.sample.dto.GeneticTestingSampleDto;


import java.util.List;

/**
 * @desc:样本管理
 * @author: fuxiang
 * @date: 2018/8/14 14:24
 */
public interface SampleService  {
    /**
     * 样笨列表
     *
     * @param condition
     * @return
     */
    ApiResult<Pagination<GeneticTestingSampleDto>> queryList(SampleCondition condition);

    /**
     * 插入样笨
     *
     * @param geneticTestingSample
     * @return
     */
    ApiResult<NullObject> insertSampleDto(GeneticTestingSample geneticTestingSample);

    /**
     * 修改样本
     *
     * @param GeneticTestingAgencySampleDto
     * @return
     */
    ApiResult<NullObject> updateSampleDto(GeneticTestingSample GeneticTestingAgencySampleDto);

    /**
     * s删除样本
     *
     * @param geneticTestingSample
     * @return
     */
    ApiResult<NullObject> deleteSampleDto(GeneticTestingSample geneticTestingSample);

    /**
     * 根据主键查询
     *
     * @param id
     * @return
     */
    ApiResult<GeneticTestingSampleDto> queryById(String id,String typeLabel);

    /**
     * 批量修改样本
     *
     * @param sampleDtoList
     * @return
     */
    ApiResult<NullObject> updateSampleDtoMore(List<GeneticTestingAgencySampleDto> sampleDtoList);

    /**
     * 获取全部的样本
     *
     * @return
     */
    ApiResult<List<GeneticTestingSampleDto>> getAll(SampleCondition condition);

    /**
     * 获取样本byids
     *
     * @param ids
     * @return
     */
    ApiResult<String> getByids(String ids);

    /**
     * 批量删除样本
     *
     * @param sampleDtoList
     * @return
     */
    ApiResult<NullObject> deleteSampleDtoMore( List<GeneticTestingSample> sampleList);

    /**
     * 将样本标记为已使用过
     * @param sampleDto
     * @return
     */
    ApiResult<NullObject> updateSampleUsed(String sampleDto);

    /**
     * 批量获取样本
     * @param ids
     * @return
     */
    ApiResult<List<GeneticTestingSampleDto>> getSamplesByids(String ids);

    /**
     * 修改被使用次数
     * @param id
     * @param type
     * @return
     */
    ApiResult updateIsUsedAmount(String id, String type);
    /**
     *删除样本类型
     * @author FX
     * @date 2018/10/31 17:23
     * @param genetictestingagencysampledto
     * @return
     */
    ApiResult<NullObject> deleteSampleType(GeneticTestingAgencySampleDto genetictestingagencysampledto);
/**
 *根据label查找
 * @author FX
 * @date 2018/11/1 16:04
 * @param label
 * @return
 */
    GeneticTestingSample getByLabel(String label,String typeLabel);
    /**
     *根据id查找没有被删除的样本
     * @author FX
     * @date 2018/11/1 16:09
     * @param id
     * @return
     */
    GeneticTestingSample getByIdAndNoDelete(String id);
}
